package com.danco.training.zaneuskaya.repository;

import java.util.Date;
import java.util.List;

import org.hibernate.HibernateException;

import com.danco.training.zaneuskaya.domain.Account;
import com.danco.training.zaneuskaya.domain.City;
import com.danco.training.zaneuskaya.domain.Country;
import com.danco.training.zaneuskaya.domain.Gender;
import com.danco.training.zaneuskaya.domain.User;

/**
 * @author Zaneuskaya Aliaksandra
 *
 */
public interface UserDao extends GenericDao<User, Integer> {

	public List<User> findOnlineUsers() throws HibernateException;

	public List<User> findOfflineUsers() throws HibernateException;

	public User findUserByAccount(Account account) throws HibernateException;

	public List<User> findUsersByName(String firstName, String lastName)
			throws HibernateException;

	public List<User> findUsersByGender(Gender gender)
			throws HibernateException;

	public List<User> findUsersByBirthday(Date birthday)
			throws HibernateException;

	public List<User> findUserByMaritalState(String state)
			throws HibernateException;

	public List<User> findUsersByCityCountry(Country country, City city)
			throws HibernateException;

	public List<User> findUsersByNameGenderBirthdayMaritalStateLocation(
			String firstName, String lastName, Gender gender, Date birthday,
			String state, Country country, City city) throws HibernateException;

}
